home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / sgml / msdos / sgmlug / hytime.dtd < prev    next >
Encoding:
Text File  |  1992-08-27  |  65.3 KB  |  1,291 lines

  1. <!-- This file contains the formal SGML specifications from the HyTime
  2.      standard (ISO/IEC DIS 10744) released October, 1991.  It is not a
  3.      true DTD, but a "meta-DTD" that specifies the architectural forms.
  4.      Consult the standard for details.
  5. -->
  6. <!DOCTYPE doc [
  7.  
  8. <!-- NOTE: The section heading comments identify the
  9.      corresponding clause headings in the body of the standard.
  10.      Those in uppercase identify HyTime modules.
  11.      Consult the standard for other conventions and explanations.
  12. -->
  13.                          <!-- BASE MODULE -->
  14.                <!-- HyTime Architectural Form Name -->
  15. <!attlist all-hyaf
  16.                    HyTime   -- HyTime architectural form --
  17.                             -- Required #FIXED value as specified
  18.                                for individual architectural form --
  19.                             NAME     #FIXED "formname"
  20. >
  21.  
  22.                        <!-- HyTime Document -->
  23. <!ENTITY % loc     -- Location address architectural forms --
  24.  "bibloc|nameloc|coordloc|strloc|tokenloc|treeloc|pathloc|attloc|notloc|fcsloc">
  25. <!ENTITY % link    -- Hyperlink architectural forms --
  26.            "linkend|ilink|agglink|spanlink">
  27. <!ENTITY % object  -- Architectural forms allowed in events --
  28.            "nHyTime|clink|pause|hold|wallpapr|accanch|fcs">
  29. <!ENTITY % resbase -- Resource architectural forms: base module --
  30.            "activity|dvlist|desctab|lexmodel">
  31. <!ENTITY % resmeas -- Resource architectural forms: measurement module --
  32.            "dimspec|dimref|markfun|measure">
  33. <!ENTITY % resfcs  -- Resource architectural forms: FCS module --
  34.            "exrecon|calref">
  35. <!ENTITY % resrend -- Resource architectural forms: rendition module --
  36.            "prorule|modrule|wndpatch|modpatch">
  37. <!ENTITY % resorce -- Resource architectural forms: all modules --
  38.            "%resbase;|%resmeas;|%resfcs;|%resrend;">
  39. <!ENTITY % eltype  -- Standard element types --
  40.            "HyLex|HyFunk|HyOp">
  41. <!element doc      -- HyTime document element --
  42.                    - O      ((%object;)|(%resorce;)|(%eltype;))+ +(%loc;|%link)>
  43. <!attlist doc      HyTime   NAME     #FIXED doc
  44.                    id       ID       #IMPLIED
  45.                             -- docdim attributes --
  46. >
  47. <!element nHyTime  -- Pseudo-form: Non-HyTime elements and/or #PCDATA --
  48.                    -- "nHyTime?": content can be empty; "nHyTime": non-empty --
  49.                    - O      ((%object;)|(%resorce;)|(%eltype;))+ +(%loc;|%link)
  50. >
  51.  
  52.               <!-- HyTime Identification Attributes -->
  53. <!attlist all-hyid
  54.                    id       -- SGML unique identifier --
  55.                             ID       #IMPLIED -- Default: none --
  56.                    HyNames  -- User names for HyTime attributes --
  57.                             -- lextype(ATTNAME, s+, NAME,
  58.                                   (s+, ATTNAME, s+, NAME)*) --
  59.                             CDATA    #FIXED "" -- Default: none --
  60.                    conloc   -- Content location (if not in syntactic content) --
  61.                             -- Can be any data if content model is all data,
  62.                                or else must conform to content model --
  63.                             -- reftype(#ANY) --
  64.                             -- lextype(IDREF) --
  65.                             CDATA    #CONREF -- Default: syntactic content --
  66.                    conlocx  -- Content location extraction --
  67.                             -- Choice: EXTRACT the content of the element
  68.                                at the content location, or USE the element
  69.                                or data at the content location --
  70.                             (extract|use) use
  71. >
  72.  
  73.                         <!-- Lexical Types -->
  74. <!attlist all-lex
  75.                    lextype  -- Lexical types of CDATA attribute values
  76.                                or character data content --
  77.                             -- Constraint: a given ATTNAME or #CONTENT
  78.                                can occur only once; a NAME must be an ltn of a
  79.                                lexmodel whose element type is the corresponding
  80.                                GI in lexmodel --
  81.                             -- lextype((ATTNAME|(rni,"CONTENT")), s+, NAME,
  82.                                   (s+, (ATTNAME|(rni,"CONTENT")), s+, NAME)*) --
  83.                             CDATA    #FIXED "" -- Default: none defined --
  84.                    lexmodel -- Lexical model notations used by lextype --
  85.                             -- Constraint: 1 per attribute or 1 for all; must
  86.                                be GIs of lexmodel form element types --
  87.                             -- lextype(gil) --
  88.                             CDATA    #FIXED "" -- Default: none --
  89. >
  90. <!element lexmodel -- Lexical model --
  91.                    - O      (nHyTime)>
  92. <!attlist lexmodel HyTime   NAME     #FIXED lexmodel
  93.                    conloc   IDREF    #CONREF
  94.                             -- lexmodel attributes --
  95.                    ltn      -- Lexical type name --
  96.                             NAME     #REQUIRED
  97.                    notation -- Data content notation --
  98.                             NAME     #REQUIRED  -- #FIXED recommended --
  99. >
  100.  
  101.                 <!-- Attribute Value Element Types -->
  102. <!attlist all-elt
  103.                    eltype   -- Element types of attribute values --
  104.                             -- Attribute is declared as IDREF --
  105.                             -- Constraint: an ATTNAME can only occur once --
  106.                             -- lextype(ATTNAME, s+, GI,
  107.                                   (s+, ATTNAME, s+, GI)*) --
  108.                             CDATA    #FIXED "" -- Default: none defined --
  109. >
  110.  
  111.                    <!-- Reference Element Types -->
  112. <!attlist all-reft
  113.                    reftype  -- Element types of ID references
  114.                                used as true references (e.g., link ends) --
  115.                             -- Constraint: types apply to anchors, not
  116.                                intermediate location addresses --
  117.                             -- lextype((ATTNAME|(rni,"CONTENT")),
  118.                                             s+, (GI|(rni,"ANY")))+ --
  119.                             CDATA    #FIXED "" -- Default: none defined --
  120. >
  121.  
  122.                  <!-- Bit Combination Skip Count -->
  123. <!attlist all-bits
  124.                    bitskip  -- Number of unparsed bit combinations
  125.                                to skip till end of element --
  126.                             NUMBER   #IMPLIED -- Default: not known --
  127. >
  128.  
  129.                 <!-- Default Value List Attributes -->
  130. <!attlist all-dvl
  131.                    subdvl   -- Subelement impliable attribute value defaults --
  132.                             -- eltype(dvlist) --
  133.                             IDREFS   #IMPLIED -- Default: none --
  134.                    sibdvl   -- Sibling impliable attribute value defaults --
  135.                             -- eltype(dvlist) --
  136.                             IDREFS   #IMPLIED -- Default: none --
  137. >
  138.  
  139.                      <!-- Default Value List -->
  140. <!element dvlist   -- Default value list --
  141.                    -- Constraint: attribute specification list --
  142.                    - O      (#PCDATA) -- lextype(char*) -->
  143. <!attlist dvlist   HyTime   NAME     #FIXED dvlist
  144.                    id       ID       #REQUIRED
  145.                             -- dvlist attributes--
  146.                    dvgi     -- Default value element type --
  147.                             -- Applies to all elements if omitted --
  148.                             -- lextype(GI) --
  149.                             CDATA    "" -- Default: all elements --
  150.                    preatts  -- Attributes whose values are to be preempted --
  151.                             -- Constraint: must be in dvlist content --
  152.                             -- lextype(ATTNAME, (s+, ATTNAME)*) --
  153.                             CDATA    "" -- Default: none --
  154. >
  155.  
  156.                  <!-- Descriptive Text Attributes -->
  157. <!attlist all-desc
  158.                    desctxt  -- Descriptive text --
  159.                             -- If specified, its descdef in desctab is treated
  160.                                by HyTime as the content of the element. --
  161.                             -- lextype(tokl) --
  162.                             CDATA    #CONREF -- Default: none --
  163.                    desctab  -- Current description tables --
  164.                             -- Searched in order listed --
  165.                             -- eltype(desctab) --
  166.                             IDREFS   #IMPLIED
  167.                                      -- Default: all, in order of occurrence --
  168.                    descuse  -- Descriptive text usage --
  169.                             -- Choice: Use the element in the descriptive text
  170.                                definition as the content (DESCCONT) or use it
  171.                                as a substitute (DESCSUB) for this element. --
  172.                             (desccont|descsub) descsub
  173. >
  174.  
  175.                       <!-- Description Table -->
  176. <!element desctab  -- Descriptive text definition table --
  177.                    - O      (desctxt, descdef)+ >
  178. <!attlist desctab  HyTime   NAME     #FIXED desctab
  179.                    id       ID       #REQUIRED >
  180.  
  181.                       <!-- Descriptive Text -->
  182. <!element desctxt  -- Descriptive text --
  183.                    O O      (#PCDATA) -- lextype(tokl) -->
  184. <!attlist desctxt  HyTime   NAME     #FIXED desctxt >
  185.  
  186.                  <!-- Descriptive Text Definition -->
  187. <!element descdef  -- Descriptive text definition --
  188.                    O O      ANY >
  189. <!attlist descdef  HyTime   NAME     #FIXED descdef >
  190.  
  191.                   <!-- Activity Tracking Policy -->
  192. <!attlist all-act
  193.                    activity -- Activity tracking policy for this element --
  194.                             -- eltype(activity) --
  195.                             IDREF    #IMPLIED -- Default: none --
  196. >
  197. <!element activity -- Activity tracking policy --
  198.                    - O      (nHyTime?)>
  199. <!attlist activity HyTime   NAME     #FIXED activity
  200.                    id       ID       #REQUIRED
  201.                    created  -- Tracking policy when element created --
  202.                             -- eltype(nHyTime) --
  203.                             IDREF    #IMPLIED -- Default: none --
  204.                    modified -- Tracking policy when element modified --
  205.                             -- eltype(nHyTime) --
  206.                             IDREF    #IMPLIED -- Default: none --
  207.                    linked   -- Tracking policy when link to element is created --
  208.                             -- Requires hyperlinks module --
  209.                             -- eltype(nHyTime) --
  210.                             IDREF    #IMPLIED -- Default: none --
  211.                    accessed -- Tracking policy when element accessed --
  212.                             -- eltype(nHyTime) --
  213.                             IDREF    #IMPLIED -- Default: none --
  214.                    deleted  -- Tracking policy when element deleted --
  215.                             -- eltype(nHyTime) --
  216.                             IDREF    #IMPLIED -- Default: none --
  217. >
  218.  
  219.                          <!-- MEASUREMENT -->
  220.                     <!-- Dimension Specification -->
  221. <!element dimspec  -- Dimension specification --
  222.                    - O   (marker1?, marker2)>
  223. <!attlist dimspec  HyTime   NAME     #FIXED dimspec
  224.                    id       ID       #IMPLIED
  225.                             -- dimspec attributes --
  226.                    overrun  -- Handling of dimension that overruns range --
  227.                             (error|trunc) error
  228. >
  229.  
  230.                  <!-- First Marker Specification -->
  231. <!element marker1  -- 1st marker specification of a dimension specification --
  232.                    -- Resolves to signed non-zero integer that indicates
  233.                       direction of indexing:
  234.                       Positive: from start of range
  235.                       Negative: from end of range if marker2 is positive,
  236.                                 from marker2      if marker2 is negative --
  237.                    -- Constraint: calref permitted only in calendars --
  238.                    O O   (marker|dimref|markfun|calref) >
  239. <!attlist marker1  HyTime   NAME     #FIXED marker1 >
  240.  
  241.                  <!-- Second Marker Specification -->
  242. <!element marker2  -- 2nd marker specification of a dimension specification --
  243.                    -- Resolves to signed non-zero integer that indicates
  244.                       direction of indexing:
  245.                       Positive: from marker1
  246.                       Negative: from end of range --
  247.                    -- Constraint: calref permitted only in calendars --
  248.                    O O   (marker|dimref|markfun|calref) >
  249. <!attlist marker2  HyTime   NAME     #FIXED marker2 >
  250.  
  251.                          <!-- Axis Marker -->
  252. <!element marker   -- Axis marker --
  253.                    O O      (#PCDATA) -- lextype(snzi) -->
  254. <!attlist marker   HyTime   NAME     #FIXED marker >
  255.  
  256.                     <!-- Extent Specification -->
  257. <!attlist exspec
  258.                             -- exspec use: event proscope modscope --
  259.                    exspec   -- Extent specification --
  260.                             -- Constraint: one dimspec per axis --
  261.                             -- eltype(dimspec) --
  262.                             -- lextype(idrl) --
  263.                             CDATA    #REQUIRED
  264. >
  265.  
  266.                 <!-- Measurement Domain Definition -->
  267. <!element measure  -- Measurement domain: convertible granules --
  268.                    -- Defines granules in terms of a reference granule
  269.                       and ultimately a standard measurement unit (SMU) --
  270.                    -- Multiple definitions with same SMU comprise one domain --
  271.                    - O      (granule+) >
  272. <!attlist measure  HyTime   NAME     #FIXED measure
  273.                    id       ID       #IMPLIED
  274.                    smu      -- Standard measurement unit for domain --
  275.                             -- Constraint: notation name of an SMU.
  276.                                If virtual, it must have a formal public ID
  277.                                of "Virtual Measurement Unit" --
  278.                             NAME     #REQUIRED
  279. >
  280. <!element granule  -- Granule definition --
  281.                    - O      (nHyTime?) >
  282. <!attlist granule  HyTime   NAME     #FIXED granule
  283.                    gn       -- Granule name (case-sensitive) --
  284.                             -- Constraint: cannot be same as SMU name
  285.                                (with case ignored) --
  286.                             -- lextype(token) --
  287.                             CDATA    #REQUIRED
  288.                    gd       -- Granule definition expression --
  289.                             -- Constraint: ratio, and reference granule that
  290.                                ratio is multiplied by (or the SMU, for which
  291.                                case is ignored) --
  292.                             -- lextype(frac, s+, token) --
  293.                             CDATA    #REQUIRED
  294. >
  295.  
  296.                     <!-- Schedule Measurement -->
  297. <!attlist schdmeas
  298.                             -- schdmeas use:
  299.                                evsched baton wand evgrp event --
  300.                    basegran -- Base granule for each axis --
  301.                             -- lextype(tokl) --
  302.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  303.                    gran2hmu -- Granule to HMU ratio for each axis --
  304.                             -- lextype(fracs) --
  305.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  306.                    pls2gran -- Pulse to granule ratio for each axis --
  307.                             -- lextype(fracs) --
  308.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  309. >
  310.  
  311.                      <!-- Dimension Reference -->
  312. <!element dimref   -- Dimension reference --
  313.                    -- Constraint: semantic constraints on references
  314.                       across axes (for example, a calref is only
  315.                       permitted from the dimspec of a calendar event).
  316.                       Empty content permitted only in a derived extent
  317.                       specification, signifying dimension of projector scope. --
  318.                    -- reftype(dimspec|evsched|wand|baton|calref|
  319.                               axis|evgrp|event|modscope|proscope) --
  320.                    - O      (#PCDATA) -- lextype(IDREF)? -->
  321. <!attlist dimref   HyTime   NAME     #FIXED dimref
  322.                    id       ID       #IMPLIED
  323.                    -- dimref attributes --
  324.                    axisref  -- Axis referenced --
  325.                             -- Omit if referenced element is a dimspec
  326.                                or has only one axis --
  327.                             -- lextype(GI) --
  328.                             CDATA    "" -- Default: one axis --
  329.                    projectr -- Event projector --
  330.                             -- For reference to projected dimension of an
  331.                                event, the projector that created it --
  332.                             -- Constraint: must be in same baton as reference --
  333.                             -- eltype(projectr) --
  334.                             IDREF    #IMPLIED -- Default: not projected --
  335.                    selcomp  -- Selected component of dimension --
  336.                            (first|last|qcnt) qcnt
  337.                    flip     -- Last is normally counted from end of range
  338.                                (negative sign), and first from start of range
  339.                                (positive).  Qcnt is also normally positive.
  340.                                Flip counts last from start of range (making it
  341.                                positive), and first from end of range (making
  342.                                it negative). Flip also makes qcnt negative. --
  343.                             (flip|noflip) noflip
  344. >
  345.  
  346. <!element markfun  -- Marker function --
  347.                    -- Represents (i.e., function returns) an axis marker --
  348.                    - O      (nHyTime) >
  349. <!attlist markfun  HyTime   NAME     #FIXED markfun
  350.                    id       ID       #IMPLIED
  351.                             -- markfun attributes --
  352.                    notation -- Data content notation --
  353.                             NAME     #IMPLIED -- #FIXED recommended --
  354.                    mfn      -- Marker function name --
  355.                             NAME     #IMPLIED -- Default: none --
  356.                    usemfn   -- Mfn of another function to which to pass
  357.                                the args of this one --
  358.                             NAME     #CONREF -- Default: none --
  359.                    args     -- Argument string passed to the function
  360.                                (if supported by function language) --
  361.                             -- lextype(char*) --
  362.                             CDATA    "" -- Default: none --
  363. >
  364.  
  365.         <!-- Document Dimension and Measurement Attributes -->
  366. <!attlist docdim
  367.                             -- docdim use: doc --
  368.                    hyqcnt   -- Highest allowable quantum count in document --
  369.                             -- Constraint: specified as the power of 2 whose
  370.                                value is 1 greater than the desired value;
  371.                                power must be 32 or greater. --
  372.                             NUMBER   #FIXED 32 -- Default: 4,294,967,295 --
  373.                    docmdu   -- SMU to MDU ratio that makes the MDU the least
  374.                                common denominator of HMUs for all schedules in
  375.                                all FCS that are in a given measurement domain.--
  376.                             -- Constraint: SMU name and ratio for one or
  377.                                more of the domains used in the document. --
  378.                             -- lextype((NAME,s+,frac),(s+,NAME,s+,frac)*) --
  379.                             CDATA    #FIXED "" -- Default: set by FCS or axis --
  380. >
  381.  
  382.  
  383.                       <!-- LOCATION ADDRESS -->
  384.                    <!-- External ID References -->
  385. <!attlist all-xidr
  386.                    exidrefs -- IDREFs that need not resolve in document --
  387.                             -- lextype((rni,"ALL") |
  388.                                 (((rni,"CONTENT")|ATTNAME), (s+, ATTNAME)*)) --
  389.                             CDATA    "" -- Default: all must be in document --
  390. >
  391.  
  392.                        <!-- Location Source -->
  393. <!attlist locsrc
  394.                             -- locsrc use: coordloc strloc tokenloc
  395.                                treeloc pathloc attloc notloc fcsloc --
  396.                    locsrc   -- location source --
  397.                             -- reftype(#ALL) --
  398.                             -- lextype(idrl) --
  399.                             CDATA    "" --he moslt: previous specified --
  400.                    evalsrc  -- Evaluate source as address or use as location --
  401.                             (evalsrc|donteval) evalsrc
  402. >
  403.  
  404.                      <!-- Aggregate Locations -->
  405. <!attlist aggloc
  406.                             -- aggloc use: coordloc strloc tokenloc
  407.                                treeloc pathloc attloc notloc fcsloc
  408.                                linkend agglink spanlink --
  409.                    ordering -- Is ordering of locations significant? --
  410.                             (ordered|noorder) noorder
  411.                    maxlevel -- Level that IDREF resolution cannot exceed,
  412.                                relative to this aggloc.  Default: all levels --
  413.                             -- Resolution includes query evaluation --
  414.                             -- lextype(snzi) --
  415.                             NMTOKEN  "-1" -- Default: all levels --
  416.                    merged   -- Should levels (after resolution to maxlevel)
  417.                                be merged into one level, or stay nested? --
  418.                             (merged|nested) nested
  419.                    aggsrc   -- Aggregate source: aggregate or members --
  420.                             (agg|members) members
  421. >
  422.  
  423.                <!-- Bibliographic Location Address -->
  424. <!element bibloc   -- Textual bibliographic reference to real object --
  425.                    -- Application can define content model as needed --
  426.                    - O      (nHyTime) >
  427. <!attlist bibloc   HyTime   NAME     #FIXED bibloc
  428.                    id       ID       #REQUIRED
  429. >
  430.  
  431.                    <!-- Named Location Address -->
  432. <!element nameloc  -- Assigns a local ID to one or more entities or elements --
  433.                    -- If more than one, this element is an aggloc --
  434.                    - O      (namelist|nmquery)+ >
  435. <!attlist nameloc  HyTime   NAME     #FIXED nameloc
  436.                    id       ID       #REQUIRED
  437.                             -- nameloc attributes --
  438.                    namesrc  -- Concatenated name lists (if not in content) --
  439.                             -- reftype(namelist|nmquery)+ --
  440.                             IDREFS   #CONREF
  441.                    nametype -- Entity names or IDs of elements --
  442.                             (entity|element) #REQUIRED
  443.                    docent   -- SGML document entity whose prolog declares
  444.                                entities or elements named in name list --
  445.                             -- reftype(nHyTime) --
  446.                             -- lextype(idrl) --
  447.                             CDATA    "" -- Default: this document --
  448.                    dtdorlpd -- Active DTD/LPD for SGML document entity --
  449.                             NAME     #IMPLIED -- Default: this DTD --
  450.                             -- aggloc attributes -->
  451.  
  452.                    <!-- Name List Specification -->
  453. <!element namelist -- List of local or external IDs, or entities --
  454.                    -- Content is parsed like attribute value specification
  455.                       for a name list value in docent concrete syntax
  456.                       except there is no limit on number of names in list --
  457.                    - O      (#PCDATA) -- lextype(char*) -->
  458. <!attlist namelist HyTime   NAME     #FIXED namelist >
  459.  
  460.                        <!-- Name List Query -->
  461. <!element nmquery  -- Query language expression that returns a name list --
  462.                    -- Selects elements or entities by semantic properties --
  463.                    -- Examples: SGML/Search, DSSSL location model --
  464.                    O O      (nHyTime) >
  465. <!attlist nmquery  HyTime   NAME     #FIXED nmquery >
  466.  
  467.                  <!-- Coordinate Location Address -->
  468. <!element coordloc -- Locates quanta on one or more coordinate axes --
  469.                    - O      (dimspec|pattern)+ >
  470. <!attlist coordloc HyTime   NAME     #FIXED coordloc
  471.                    id       ID       #REQUIRED
  472.                             -- locsrc attributes --
  473.                             -- aggloc attributes -->
  474.  
  475.                  <!-- Pattern Matching Expression -->
  476. <!element pattern  -- Pattern matching expression --
  477.                    -- Constraint: represents dimspec+ --
  478.                    -- Compares representation of ordered data to pattern (in a
  479.                       notation such as HyLex, Unix grep, C scanf, REXX parse)
  480.                       and returns dimspecs locating instances of pattern --
  481.                    O O  (lexmodel) >
  482. <!attlist pattern  HyTime   NAME     #FIXED pattern >
  483.  
  484.                    <!-- String Location Address -->
  485. <!element strloc   -- Locates string of bit combinations --
  486.                    - O      (dimspec|pattern)+ >
  487. <!attlist strloc   HyTime   NAME     #FIXED strloc
  488.                    id       ID       #REQUIRED
  489.                             -- locsrc attributes --
  490.                             -- aggloc attributes -->
  491.  
  492.                  <!-- Token List Location Address -->
  493. <!element tokenloc -- Locates tokens in a token list --
  494.                    - O      (dimspec|pattern)+ >
  495. <!attlist tokenloc HyTime   NAME     #FIXED tokenloc
  496.                    id       ID       #REQUIRED
  497.                             -- locsrc attributes --
  498.                             -- aggloc attributes -->
  499.  
  500.                     <!-- Tree Location Address -->
  501. <!element treeloc  -- Locates nodes in a tree --
  502.                    - O      (dimspec|pattern)+ >
  503. <!attlist treeloc  HyTime   NAME     #FIXED treeloc
  504.                    id       ID       #REQUIRED
  505.                             -- locsrc attributes --
  506.                             -- aggloc attributes -->
  507.  
  508.                     <!-- Path Location Address -->
  509. <!element pathloc  -- Locates nodes in a tree viewed as a path list --
  510.                    -- Constraint: must resolve to pairs of marker pairs --
  511.                    - O      (dimspec|pattern)+ >
  512. <!attlist pathloc  HyTime   NAME     #FIXED pathloc
  513.                    id       ID       #REQUIRED
  514.                             -- locsrc attributes --
  515.                             -- aggloc attributes -->
  516.  
  517.                       <!-- Semantic Locations -->
  518.                  <!-- Attribute Location Address -->
  519. <!element attloc   -- Locates attribute or object class ID --
  520.                    - O      (nHyTime)>
  521. <!attlist attloc   HyTime   NAME     #FIXED attloc
  522.                    id       ID       #REQUIRED
  523.                             -- attloc attributes --
  524.                    attlist  -- Attribute list type --
  525.                             -- For SGML: data|starttag|link|result --
  526.                             NAME     #IMPLIED -- Default: starttag --
  527.                    attname  -- Attribute name --
  528.                             NAME     #IMPLIED -- Default: object class ID --
  529.                             -- locsrc attributes --
  530.                             -- aggloc attributes -->
  531.  
  532.                     <!-- Notation-specific Location Address -->
  533. <!element notloc   -- Locates an arbitrary portion of data in terms of its
  534.                       data content notation (e.g., internal label,
  535.                       3rd polygon in CGM) --
  536.                    - O      (nHyTime) >
  537. <!attlist notloc   HyTime   NAME     #FIXED notloc
  538.                    id       ID       #REQUIRED
  539.                             -- notloc attributes --
  540.                    prolog   -- Semantic and parsing context for locsrc --
  541.                             -- reftype(nHyTime) --
  542.                             -- lextype(idrl) --
  543.                             CDATA    "" -- Default: locsrc --
  544.                             -- locsrc attributes --
  545.                             -- aggloc attributes -->
  546.  
  547.  
  548.                          <!-- HYPERLINKS -->
  549.                       <!-- Independent Link -->
  550. <!element ilink    -- Independent link --
  551.                    - O      (nHyTime?) >
  552. <!attlist ilink    HyTime   NAME     #FIXED ilink
  553.                             -- ilink attributes --
  554.                    endtypes -- Element types of link ends --
  555.                             -- lextype(gil) --
  556.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  557.                    linkends -- Link ends --
  558.                             -- In order corresponding to endtypes --
  559.                             -- eltype(linkend) --
  560.                             IDREFS   #REQUIRED
  561. >
  562. <!element linkend  -- Link end definition --
  563.                    -- Content is anchor location: if empty, link element
  564.                       content is anchor; if IDREFs, anchor is aggloc --
  565.                    -- reftype (#ANY) --
  566.                    - O      (#PCDATA) -- lextype(idrl) -->
  567. <!attlist linkend  HyTime   NAME     #FIXED linkend
  568.                    id       ID       #REQUIRED
  569.                             -- linkend attributes --
  570.                    traverse -- begin(B), return(R), both(BR) --
  571.                             (b|r|br) br
  572.                    aggacc   -- Aggloc access: direct(D), indirect(I)
  573.                                               cannot be an aggregate(N) --
  574.                             (d|i|n)  n
  575.                    endterm  -- Link end term information --
  576.                             -- reftype (#ANY) --
  577.                             IDREF    #IMPLIED -- Default: use anchor --
  578.                             -- aggloc attributes --
  579. >
  580.  
  581.                        <!-- Contextual Link -->
  582. <!element clink    -- Contextual link --
  583.                    -- Constraint: content must be valid in the context
  584.                       in which the contextual link element occurs --
  585.                    - O      ANY >
  586. <!attlist clink    HyTime   NAME     #FIXED clink
  587.                             -- clink attributes --
  588.                    refsub   -- Endtype of subject to which reference refers --
  589.                             -- Constraint: traverse must be #FIXED R or BR --
  590.                             -- lextype(GI) --
  591.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  592.                    linkends -- Link ends --
  593.                             -- Constraint: (refsub) --
  594.                             -- eltype(linkend) --
  595.                             IDREF    #REQUIRED
  596. >
  597.  
  598.                    <!-- Aggregate Location Link -->
  599. <!element agglink  -- Aggregate location link --
  600.                    -- Links a list of locations into an aggloc --
  601.                    -- reftype (linkend) --
  602.                    - O      (#PCDATA) -- lextype(idrl) -->
  603. <!attlist agglink  HyTime   NAME     #FIXED agglink
  604.                    id       ID       #REQUIRED
  605.                             -- aggloc attributes --
  606. >
  607.  
  608.                      <!-- Span Location Link -->
  609. <!element spanlink -- Span location link --
  610.                    -- A span between a pair of PARSED locations in an SGML
  611.                       document (except within attribute values) --
  612.                    -- If more than one pair, this element is equivalent
  613.                       to an aggloc whose members are all spanlocs --
  614.                    - O      (nHyTime?) >
  615. <!attlist spanlink HyTime   NAME     #FIXED spanlink
  616.                    id       ID       #REQUIRED
  617.                             -- spanlink attributes --
  618.                    spanstrt -- Endtype of span start link end --
  619.                             -- lextype(GI) --
  620.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  621.                    spanend  -- Endtype of span end link end --
  622.                             -- lextype(GI) --
  623.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  624.                    linkends -- Link ends --
  625.                             -- Constraint: (spanstrt, spanend) --
  626.                             -- eltype(linkend) --
  627.                             IDREFS   #REQUIRED
  628. >
  629.  
  630.                    <!-- FINITE COORDINATE SPACE -->
  631. <!element fcs      -- Finite coordinate space --
  632.                    - O      (evsched|wand|baton)+ >
  633. <!attlist fcs      HyTime   NAME     #FIXED fcs
  634.                    id       ID       #IMPLIED
  635.                             -- fcs attributes --
  636.                    fcsmdu   -- SMU to MDU ratio that makes the MDU the least
  637.                                common denominator of HMUs for all schedules on
  638.                                all axes of FCS in a given measurement domain.--
  639.                             -- Constraint: SMU name and ratio for one or
  640.                                more of the domains used in the FCS. --
  641.                             -- lextype((NAME,s+,frac),(s+,NAME,s+,frac)*) --
  642.                             CDATA    #FIXED "" -- Default: equal to docmdu --
  643.                    axisdefs -- Definitions of FCS axes --
  644.                             -- lextype(gil) --
  645.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  646. >
  647.                        <!-- Axis Definition -->
  648. <!element axis     -- Axis definition for a finite coordinate space --
  649.                    -- It extends the FCS definition; there is one instance,
  650.                       for use in referencing. --
  651.                    - O      EMPTY >
  652. <!attlist axis     HyTime   NAME     #FIXED axis
  653.                             -- axis attributes --
  654.                    axismeas -- Measurement domain (SMU) of this axis --
  655.                             -- lextype(token) --
  656.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  657.                    axismdu  -- SMU to MDU ratio that makes the MDU the least
  658.                                common denominator of HMUs for all schedules on
  659.                                this axis in all FCS elements that use it.--
  660.                             -- lextype(frac) --
  661.                             CDATA    #FIXED "" -- Default: equal to fcsmdu --
  662.                    axisdim  -- Dimension of this axis in MDUs --
  663.                             -- lextype(NUMBER) --
  664.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  665.                    calendar -- Synchronizes axis to absolute date and time by
  666.                                specifying date/time of first quantum --
  667.                             -- Constraint: only if axismeas is SIsecond;
  668.                                empty string if not a calendar.  Omission of date
  669.                                component means 1, of time component means 0.
  670.                                (Time is expressed in elapsed quanta.)
  671.                                Julian and UTC dates cannot be mixed. --
  672.                             -- eltype(calref) --
  673.                             -- lextype(IDREF) --
  674.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  675. >
  676.  
  677.                           <!-- Schedule -->
  678. <!attlist sched
  679.                             -- sched use: evsched baton wand --
  680.                    axisord  -- Order of axes in schedule --
  681.                             -- lextype(gil) --
  682.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  683.                    sorted   -- Representation of schedule elements is sorted
  684.                                by order of position on first axis of schedule --
  685.                             -- lextype("sorted"|"unsorted") --
  686.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  687.                    apporder -- Order of schedule elements is significant to
  688.                                the application and must be preserved --
  689.                             -- lextype("order"|"disorder") --
  690.                             CDATA    #FIXED "" -- Default: #FIXED in DTD --
  691. >
  692.  
  693.                        <!-- Event Schedule -->
  694. <!element evsched  -- Event schedule --
  695.                    - O      (evgrp|event|clink)* >
  696. <!attlist evsched  HyTime   NAME     #FIXED evsched
  697.                    id       ID       #IMPLIED
  698.                             -- sched attributes --
  699.                             -- schdmeas attributes --
  700. >
  701.  
  702.                          <!-- Event Group -->
  703. <!element evgrp    -- Event group --
  704.                    - O      (evgrp|event|clink)+ >
  705. <!attlist evgrp    HyTime   NAME     #FIXED evgrp
  706.                    id       ID       #IMPLIED
  707.                             -- evgrp attributes --
  708.                    grpscope -- Group scope (extent of group) --
  709.                             -- For each axis, the dimension is the lowest first
  710.                                quantum of any group member through the highest
  711.                                last quantum of any group member on that axis --
  712.                             -- Optional: can be calculated --
  713.                             -- Constraint: one dimspec per axis --
  714.                             -- eltype(dimspec) --
  715.                             -- lextype(idrl) --
  716.                             CDATA    #IMPLIED -- Default: to be calculated --
  717.                    grpdex   -- Group derived extent specification --
  718.                             -- Use for resizing, rearrangement, repetition.
  719.                                Group members are replaced with derived ones --
  720.                             -- Derived extents use same schdmeas as group --
  721.                             -- eltype(dexspec) --
  722.                             IDREF    #IMPLIED -- Default: no derivation --
  723.                             -- schdmeas attributes --
  724. >
  725.  
  726.                 <!-- Derived Extent Specification -->
  727. <!element dexspec  -- Derived extent specification --
  728.                    -- Defines 1 or more derived extents for events in its scope;
  729.                       "scope" is extent of proscope, modscope, or evgrp --
  730.                    -- Constraint: number of dimspecs = number of derived extents
  731.                       * number of axes in derived extent --
  732.                    O O      (dimspec+) >
  733. <!attlist dexspec  HyTime   NAME     #FIXED dexspec >
  734.  
  735.                             <!-- Event -->
  736. <!element event    -- Event --
  737.                    -- Object could include loc addresses to identify portions --
  738.                    - O      (%object;|%loc;)>
  739. <!attlist event    HyTime   NAME     #FIXED event
  740.                    id       ID       #IMPLIED
  741.                             -- event attributes --
  742.                    exrecon  -- Extent reconciliation rule if object won't fit --
  743.                             -- eltype(exrecon) --
  744.                             IDREF    #IMPLIED -- Default: none --
  745.                             -- exspec attributes --
  746.                             -- schdmeas attributes --
  747. >
  748.  
  749.                       <!-- Malleable Objects -->
  750. <!element pause    -- Imperceivable object: silent and blank --
  751.                    - O      (nHyTime?)>
  752. <!attlist pause    HyTime   NAME     #FIXED pause
  753.                    id       ID       #REQUIRED >
  754. <!element hold     -- Holdover object: continues last perception --
  755.                    -- If object is object of event (rather than filler),
  756.                       holds the previous object in the schedule --
  757.                    - O      (nHyTime?)>
  758. <!attlist hold     HyTime   NAME     #FIXED hold
  759.                    id       ID       #REQUIRED >
  760. <!element wallpapr -- Continuous perceivable object --
  761.                    - O      (nHyTime)>
  762. <!attlist wallpapr HyTime   NAME     #FIXED wallpapr
  763.                    id       ID       #REQUIRED >
  764.  
  765.                     <!-- Accessed Anchor List -->
  766. <!element accanch  -- Accessed anchor list --
  767.                    -- Constraint: if empty, all anchors and link end terms of
  768.                       all links, when accessed, are the object of this event if
  769.                       they are not included in another accessed anchor list. --
  770.                    - O      (acctype|acclink)* >
  771. <!attlist accanch  HyTime   NAME     #FIXED accanch
  772.                    id       ID       #REQUIRED
  773. >
  774. <!attlist accend
  775.                             -- accend use: acctype acclink --
  776.                    accend   -- For accessed link end, show ENDTERM or ANCHOR? --
  777.                             (endterm|anchor) anchor
  778. >
  779. <!element acctype  -- Accessed link element type --
  780.                    -- Constraint: GI of link element type and zero or more of
  781.                       its link end types (zero means all link end types). --
  782.                    - O      (#PCDATA) -- lextype(GI, (s+, GI)*) -->
  783. <!attlist acctype  HyTime   NAME     #FIXED acctype
  784.                             -- accend attributes --
  785. >
  786. <!element acclink  -- Accessed link element --
  787.                    -- Constraint: ID of link element and zero or more of its
  788.                       link ends (zero means all link ends). --
  789.                    -- eltype((ilink|clink|agglink|spanlink), linkend) --
  790.                    - O      (#PCDATA) -- lextype(IDREF, (s+, IDREF)*) -->
  791. <!attlist acclink  HyTime   NAME     #FIXED acclink
  792.                             -- accend attributes --
  793. >
  794.  
  795.                <!-- Extent Reconciliation Strategy -->
  796. <!element exrecon  -- Reconciliation strategy if object won't fit extent --
  797.                    - O      (nHyTime?) >
  798. <!attlist exrecon  HyTime   NAME     #FIXED exrecon
  799.                    id       ID       #REQUIRED
  800.                    altrecon -- Alternative reconciliation strategy to try
  801.                                for least objectionable fit --
  802.                             -- eltype(exrecon) --
  803.                             IDREF    #IMPLIED -- Default: no more to try --
  804.                    altcrit  -- Criteria for deciding whether to use altrecon --
  805.                             -- eltype(nHyTime) --
  806.                             IDREF    #IMPLIED -- Default: none --
  807.                    replace  -- Replacement object (e.g., malleable or error) --
  808.                             -- Normally omitted for 1st exrecon in chain --
  809.                             -- eltype(#ANY) --
  810.                             IDREF    #IMPLIED -- Default: don't replace --
  811.                    align    -- Align object (before vamping) with event --
  812.                             -- Constraint: one F|C|L or snum for each axis --
  813.                             -- lextype(("F"|"C"|"L")+|(snum+, char+)) --
  814.                             CDATA    "" -- Default: C for each axis --
  815.                    vamp     -- Repeat undersize object in specified axis
  816.                                and optionally crop the excess. --
  817.                             -- VAMPCROP repeats 0 or more times until it
  818.                                overshoots, then crops the excess. --
  819.                             -- VAMPFILL repeats 0 or more times until it
  820.                                can go no further without overshooting, then
  821.                                fills the excess with filler. --
  822.                             -- NOVAMP doesn't repeat object but fills on
  823.                                undershot axes and crops on overshot axes. --
  824.                             -- Constraint: one keyword per axis --
  825.                             -- lextype((vampcrop|vampfill|novamp),
  826.                                   (s+, (vampcrop|vampfill|novamp))*) --
  827.                             -- lextype(NAMES) --
  828.                             CDATA    "" -- Default: novamp for each axis --
  829.                    filler   -- Malleable object to fill excess extent --
  830.                             -- eltype(hold|pause|wallpapr) --
  831.                             IDREF    pause
  832. >
  833.  
  834.               <!-- Finite Coordinate Space Location -->
  835. <!element fcsloc   -- Imposes a HyTime FCS onto data so that a location
  836.                       within it can be defined by a HyTime extent --
  837.                    - O      (dimspec+) --in impfcs order in FCS-units-->
  838. <!attlist fcsloc   HyTime   NAME     #FIXED fcsloc
  839.                    id       ID       #REQUIRED
  840.                             -- fcsloc attributes --
  841.                    impfcs   -- Finite coordinate space imposed on this data --
  842.                             -- eltype(fcs) --
  843.                             IDREF    #REQUIRED
  844.                             -- locsrc attributes --
  845.                             -- aggloc attributes -->
  846.  
  847.                      <!-- Calendar Reference -->
  848. <!element calref   -- Calendar reference --
  849.                    -- Constraint: date is valid date in year/month/day
  850.                       format, Julian date is signed number, time is valid 24-hr
  851.                       time in hour:minute:second.decimal format, except
  852.                       that components can be omitted. --
  853.                    -- Omitted components are those of previous specified
  854.                       event on this axis (first quantum if none previous). --
  855.                    - O      (#PCDATA) -- lextype((date|juldate),s+,timeoday) -->
  856. <!attlist calref   HyTime   NAME     #FIXED calref
  857.                    id       ID       #IMPLIED
  858.                    -- calref attributes --
  859.                    timezone -- Offset from GMT --
  860.                             -- Constraint: valid time zone offset in hour,
  861.                                minute format; if DST specified, hour is
  862.                                incremented by 1 --
  863.                             -- lextype(snzi,(".",nzi)?, (s+, "DST")?) --
  864.                             CDATA    "" -- Default: local time --
  865.                    era      -- Era: previous (BC/BCE/BP) or current (AD/CE) --
  866.                             -- Constraint: not specified for juldate --
  867.                             -- lextype("BC"|"BCE"|"BP"|"AD"|"CE") --
  868.                             CDATA    "" -- Default: last specified --
  869. >
  870.  
  871.  
  872.                           <!-- RENDITION -->
  873.                      <!-- Object Modification -->
  874.                             <!-- Wand -->
  875. <!element wand     -- Wand --
  876.                    - O      (modscope+)>
  877. <!attlist wand     HyTime   NAME     #FIXED wand
  878.                    id       ID       #REQUIRED
  879.                             -- sched attributes --
  880.                             -- schdmeas attributes --
  881. >
  882.                       <!-- Modification Rule -->
  883. <!element modrule  -- Modification rule --
  884.                    -- Constraint: an event schedule and any wands that affect it
  885.                       must be aligned (that is, have the same axisords). --
  886.                    -- reftype((evsched, (wand|wndpatch)) |
  887.                         ((event|evgrp), (nHyTime|modpatch)) --
  888.                    - O      (#PCDATA) -- lextype(idr2l) -->
  889. <!attlist modrule  HyTime   NAME     #FIXED modrule
  890.                    id       ID       #REQUIRED
  891. >
  892.  
  893.                        <!-- Modifier Scope -->
  894. <!element modscope -- Modifier scope --
  895.                    - O      (nHyTime)>
  896. <!attlist modscope HyTime   NAME     #FIXED modscope
  897.                    id       ID       #IMPLIED
  898.                             -- exspec attributes --
  899. >
  900.  
  901.                            <!-- Patches -->
  902. <!element wndpatch -- Wand patch --
  903.                    -- Constraint: subset of SGML model group with IDREFs as
  904.                       names and no occurrence indicators or OR connectors. --
  905.                    -- reftype(wndpatch|wand) --
  906.                    - O      (#PCDATA) -- lextype(char*) -->
  907. <!attlist wndpatch HyTime   NAME     #FIXED wndpatch
  908.                    id       ID       #REQUIRED >
  909. <!element modpatch -- Modifier patch --
  910.                    -- Constraint: subset of SGML model group with IDREFs as
  911.                       names and no occurrence indicators or OR connectors. --
  912.                    -- reftype(modpatch|nHyTime) --
  913.                    - O      (#PCDATA) -- lextype(char*) -->
  914. <!attlist modpatch HyTime   NAME     #FIXED modpatch
  915.                    id       ID       #REQUIRED >
  916.  
  917.  
  918.                       <!-- Event Projection -->
  919.                             <!-- Baton -->
  920. <!element baton    -- Schedule of schedule projectors --
  921.                    - O      (proscope+) >
  922. <!attlist baton    HyTime   NAME     #FIXED baton
  923.                    id       ID       #REQUIRED
  924.                             -- baton attributes --
  925.                    pevsched -- Projected event schedule --
  926.                             -- Constraint: must be different FCS from baton --
  927.                             -- eltype(evsched) --
  928.                             IDREF    #REQUIRED
  929.                             -- sched attributes --
  930.                             -- schdmeas attributes --
  931. >
  932.                        <!-- Projection Rule -->
  933. <!element prorule  -- Projection rule --
  934.                    -- Constraint: pairs identify original event schedule and
  935.                       baton, which must be aligned (have the same axisords). --
  936.                    -- reftype(evsched, baton) --
  937.                    - O      (#PCDATA) -- lextype(idr2l) -->
  938. <!attlist prorule  HyTime   NAME     #FIXED prorule
  939.                    id       ID       #REQUIRED >
  940.  
  941.                        <!-- Projector Scope -->
  942. <!element proscope -- Projector scope --
  943.                    -- Defines the scope of an event projector
  944.                       as an extent of the unprojected schedule --
  945.                    - O      (projectr) >
  946. <!attlist proscope HyTime   NAME     #FIXED proscope
  947.                    id       ID       #IMPLIED
  948.                             -- exspec attributes --
  949. >
  950.  
  951.                        <!-- Event Projector -->
  952. <!element projectr -- Event projector --
  953.                    -- Defines extent in the projected schedule into which
  954.                       events within the projector scope will be projected --
  955.                    - O      (dexspec|profun|scaleref) >
  956. <!attlist projectr HyTime   NAME     #FIXED projectr
  957.                             -- projectr attributes --
  958.                    strict   -- Strictness of interpretation: e.g., rubato --
  959.                             -- lextype(tokl) --
  960.                             CDATA    "" -- Default: last specified -->
  961.  
  962.                      <!-- Projection Function -->
  963. <!element profun   -- Projection function --
  964.                    -- Application attributes can serve as parameters.
  965.                       They can identify elements that return variables set
  966.                       during rendition, thereby allowing one baton to affect
  967.                       the behavior of another (batons controlling batons). --
  968.                    - O      (nHyTime)>
  969. <!attlist profun   HyTime   NAME     #FIXED profun >
  970.  
  971.                       <!-- Scaling Reference -->
  972. <!element scaleref -- Scaling reference --
  973.                    -- Instantaneous scaling applicable to a specified quantum in
  974.                       each axis of an aligned original or projected schedule --
  975.                    -- Constraint: one dimref per axis of baton --
  976.                    - O      (dimref+) >
  977. <!attlist scaleref HyTime   NAME     #FIXED scaleref >
  978.  
  979.  
  980.                  <!-- End of Architectural Forms -->
  981.  
  982.                     <!-- HyTime Lexical Model -->
  983. <!NOTATION HyLex   PUBLIC
  984.            "+//ISO/IEC 10744//NOTATION HyTime Lexical Model Notation//EN" >
  985. <!ELEMENT HyLex    -- HyTime lexical model --
  986.                    -- Constraint: SGML model group with literals and no
  987.                       AND connector.  Names are ltn attribute values. --
  988.                    - O   CDATA -- lextype(char*) -->
  989. <!ATTLIST HyLex    HyTime   NAME     #FIXED lexmodel
  990.                             -- lexmodel attributes --
  991.                    ltn      -- Lexical type name --
  992.                             NAME     #REQUIRED
  993.                    notation -- Data content notation --
  994.                             NAME     #FIXED HyLex
  995. >
  996.  
  997.            <!-- HyTime Single Operator Marker Function -->
  998. <!ELEMENT HyOp     -- HyTime single operator marker function --
  999.                    -- Represents (i.e., function returns) an axis marker --
  1000.                    -- For use when HyFunk is not available --
  1001.                    - O   (marker|dimref|markfun)* -- Content is "meta" -->
  1002. <!ATTLIST HyOp     HyTime   NAME     #FIXED markfun
  1003.                    id       ID       #IMPLIED
  1004.                             -- HyOp attributes --
  1005.                    opname   -- Operator name (same as HyFunk) --
  1006.               (sum|subt|mult|div|avg|max|min|abs|nabs|incr|decr|rand|mod)
  1007.                                      #REQUIRED
  1008. >
  1009.  
  1010.                     <!-- HyTime Function Language -->
  1011. <!NOTATION HyFunk  PUBLIC
  1012.            "+//ISO/IEC 10744//NOTATION HyTime Function Language//EN" >
  1013. <!ELEMENT HyFunk   -- HyTime function language expression --
  1014.                    - O   CDATA -- lextype(char*) -->
  1015. <!ATTLIST HyFunk   HyTime   NAME     #FIXED markfun
  1016.                             -- markfun attributes --
  1017.                    notation -- Data content notation --
  1018.                             NAME     #FIXED HyFunk
  1019.                    mfn      -- Marker function name --
  1020.                             NAME     #IMPLIED
  1021.                    usemfn   -- Mfn of another function to which to pass
  1022.                                the args of this one --
  1023.                             NAME     #CONREF
  1024.                    args     -- Argument string passed to the function --
  1025.                             -- Constraint: 1-999 tokens, each being a snzi
  1026.                                or an IDREF that ultimately locates a snzi --
  1027.                             -- reftype(#ANY) --
  1028.                             -- lextype((snzi|IDREF), (s+, (snzi|IDREF))*) --
  1029.                             CDATA    #IMPLIED
  1030. >
  1031.  
  1032. <!--
  1033. HyFunk is a trivial function language intended for simple arithmetic
  1034. on axis markers; that is, non-zero integers within a finite range.
  1035. The following table shows the syntax of the HyFunk language, defined
  1036. using the HyLex notation.
  1037.  
  1038. <hylex ltn=HyFunk>   (fun)                                     </hylex>
  1039. <hylex ltn=fun>      (startfun, s*, funbody*, s*, endfun)      </hylex>
  1040. <hylex ltn=startfun> ((mfn|("@",operator)), s*, "(")           </hylex>
  1041. <hylex ltn=funbody>  ((operand, (s+, operand)*))               </hylex>
  1042. <hylex ltn=endfun>   (")")                                     </hylex>
  1043. <hylex ltn=operand>  (fun|dimref|ddimref|snzi|arg)             </hylex>
  1044. <hylex ltn=dimref>   ("@",dimop,s*,"(",s*, refbody, s*,")")    </hylex>
  1045. <hylex ltn=refbody>  ((IDREF|(rni,"SCOPE")), s*, GI?)          </hylex>
  1046. <hylex ltn=ddimref>  ("@",ddimop,s*,"(",s*, drefbody, s*,")")  </hylex>
  1047. <hylex ltn=drefbody> (IDREF, s+, IDREF, s*, GI?)               </hylex>
  1048. <hylex ltn=mfn>      (NAME)                                    </hylex>
  1049. <hylex ltn=dimop>    (NAME)                                    </hylex>
  1050. <hylex ltn=operator> (NAME)                                    </hylex>
  1051. <hylex ltn=snzi>     (("+"|"-")?,unzi)                         </hylex>
  1052. <hylex ltn=arg>      ("%",nzdigit,((Digit, Digit?)?)           </hylex>
  1053. <hylex ltn=nzdigit>  ("1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9")     </hylex>
  1054. <hylex ltn=unzi>      (nzdigit,Digit*)                         </hylex>
  1055.  
  1056. where:
  1057.  
  1058. mfn      is a marker function name from a HyFunk element.
  1059. dimop    is a dimension reference function named:
  1060.             first    for a reference to the first quantum
  1061.             last     for a reference to the last quantum
  1062.             qcnt     for a reference to the quantum count
  1063.             flfirst  for a reference to the first quantum with flip
  1064.             fllast   for a reference to the last quantum with flip
  1065.             flqcnt   for a reference to the quantum count with flip
  1066.          Its operands are:
  1067.             IDREF    is the first operand, identifying an element with a
  1068.                      dimension, or a dimref element.
  1069.             #SCOPE   is an alternative first operand, permitted in a derived
  1070.                      extent specification, identifying the derivation's scope.
  1071.             GI       is the optional second operand, naming the axis of
  1072.                      the identified element's extent, if it has more than one.
  1073. ddimop   is a derived dimension reference function named:
  1074.             dfirst   for a reference to the derived first quantum
  1075.             dlast    for a reference to the derived last quantum
  1076.             dqcnt    for a reference to the derived quantum count
  1077.             dflfirst for a reference to the derived first quantum with flip
  1078.             dfllast  for a reference to the derived last quantum with flip
  1079.             dflqcnt  for a reference to the derived quantum count with flip
  1080.          Its operands are:
  1081.             IDREF    is the first operand, identifying an unprojected event.
  1082.             IDREF    is the second operand, identifying an event schedule
  1083.                      projector or event group.
  1084.             GI       is the optional third operand, naming the axis of the
  1085.                      event's derived extent, if it has more than one.
  1086. arg      is a placeholder (%1-%999) that is replaced by a snzi
  1087.          specified directly or via an IDREF on the "ARGS" attribute of the
  1088.          HyFunk element containing the function.  If not specified, it is empty.
  1089. operator is a HyFunk operator.
  1090.  
  1091. The following table shows each HyFunk operator name, the number of
  1092. operands in its function body, and the value it returns.
  1093.  
  1094. NAME  FUNCTION BODY      RETURNED VALUE
  1095.  
  1096. avg  (operand+)          Average of all operands (rounded).
  1097. decr (operand)           Operand decremented by 1.
  1098. div  (operand, operand)  First operand divided by second operand (truncated).
  1099. incr (operand)           Operand incremented by 1.
  1100. max  (operand+)          Highest operand.
  1101. min  (operand+)          Lowest operand.
  1102. mod  (operand, operand)  Remainder of first operand divided by second operand.
  1103. mult (operand, operand+) Product of all operands multiplied together.
  1104. abs  (operand)           Absolute value of operand.
  1105. nabs (operand)           Negated absolute value of operand.
  1106. rand ()                  Pseudo-random value from 1 through hyqcnt.
  1107. subt (operand, operand)  Second operand subtracted from first.
  1108. sum  (operand, operand+) Sum of all operands.
  1109. -->
  1110.  
  1111.                       <!-- Measurement Units -->
  1112. <!NOTATION gquantum PUBLIC  -- Generic Quantum --
  1113.            "+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//XX" >
  1114. <!NOTATION SIsecond PUBLIC  -- Time --
  1115.            "+//ISO/IEC 10744//NOTATION Systeme International second//XX" >
  1116. <!NOTATION SImeter  PUBLIC  -- Length --
  1117.            "+//ISO/IEC 10744//NOTATION Systeme International meter//XX" >
  1118. <!NOTATION virtime  PUBLIC  -- Virtual Time Unit --
  1119.            "+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//XX" >
  1120. <!NOTATION virspace PUBLIC  -- Virtual Space Unit --
  1121.            "+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//XX" >
  1122.  
  1123. ]>
  1124. <doc>
  1125.  
  1126.                     <!-- Some Useful Instances -->
  1127.  
  1128. <!-- The following "HyLex" elements comprise the public text identified as:
  1129.      "ISO/IEC 10744:1991::DIS//TEXT Useful HyLex Lexical Types//EN"
  1130. -->
  1131.  
  1132.                     <!-- Useful Lexical Types -->
  1133. <hylex ltn=idrl> (IDREF, (s+, IDREF)*) </hylex><!-- IDREF list -->
  1134. <hylex ltn=idrn> (IDREF | #NULL)       </hylex><!-- IDREF or #NULL -->
  1135. <hylex ltn=names> (NAME, (s+, NAME)*)  </hylex><!-- name list -->
  1136. <hylex ltn=numl>(NUMBER, (s+, NUMBER)*)</hylex><!-- number list -->
  1137. <hylex ltn=gil> (GI, (s+, GI)*)        </hylex><!-- GI list -->
  1138. <hylex ltn=idr2> (IDREF, s+, IDREF)    </hylex><!-- IDREF pair -->
  1139. <hylex ltn=idr2l> (idr2, (s+, idr2)*)  </hylex><!-- IDREF pair list -->
  1140. <hylex ltn=idr3> (IDREF, s+, IDREF, s+, IDREF)
  1141.                                        </hylex><!-- IDREF triple -->
  1142. <hylex ltn=idr3l> (idr3, (s+, idr3)*)  </hylex><!-- IDREF triple list -->
  1143. <hylex ltn=frac> (NUMBER, s+, NUMBER)  </hylex><!-- unsigned fraction -->
  1144. <hylex ltn=fracs> (frac, (s+, frac)*)  </hylex><!-- unsigned fraction list -->
  1145. <hylex ltn=snum> (("+"|"-")?,NUMBER)   </hylex><!-- signed number -->
  1146. <hylex ltn=nzdigit> ("1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9")
  1147.                                        </hylex><!-- non-zero digit -->
  1148. <hylex ltn=unzi> (nzdigit,Digit*)      </hylex><!-- unsigned non-zero integer-->
  1149. <hylex ltn=snzi> (("+"|"-")?,unzi)     </hylex><!-- signed non-zero integer -->
  1150. <hylex ltn=token> (nmchar+)            </hylex><!-- token -->
  1151. <hylex ltn=tokl> (token, (s+, token)*) </hylex><!-- token list -->
  1152. <hylex ltn=date> ((snum,"-")?,NUMBER?,"-",NUMBER?)
  1153.                                        </hylex><!-- UTC date -->
  1154. <hylex ltn=timeoday> (NUMBER?,":",NUMBER?,(":",NUMBER)?,(".",Digit+)?)
  1155.                                        </hylex><!-- absolute time -->
  1156. <hylex ltn=juldate> (snum)             </hylex><!-- Julian date -->
  1157.  
  1158.           <!-- HyTime Measurement Unit Ratio (HMUratio) -->
  1159. <!-- A HyFunk marker function for use in derived extent specifications only.
  1160.      The function element accepts a frac in its args and multiplies
  1161.      it by the qcnt of the derivation scope.  An optional GI of an axis can
  1162.      be included as the third arg if the extent is multidimensional.
  1163.  
  1164.      Example of use for one dimension, ratio of 3/2:
  1165.  
  1166.      <dexspec><dimspec><marker2>
  1167.                                 <hyfunk usemfn=HMUratio args="3 2">
  1168.      </dexspec>
  1169. -->
  1170. <HyFunk mfn=HMUratio>@div(@mult(%1 @qcnt(#SCOPE %3))%2)</HyFunk>
  1171.  
  1172. <!-- The following "measure" elements comprise the public text identified as:
  1173.      "ISO/IEC 10744:1991::DIS//TEXT Useful Measurement Domains//EN"
  1174. -->
  1175.  
  1176. <measure smu=gquantum>
  1177.   <granule gn=quantum         gd="      1      1 GQUANTUM">
  1178.   <granule gn=bit-combination gd="      1      1 quantum">
  1179.   <granule gn=token           gd="      1      1 quantum">
  1180.   <granule gn=node            gd="      1      1 quantum">
  1181. </measure>
  1182.  
  1183. <measure smu=virtime>
  1184.   <granule gn=vtu             gd="      1      1 VIRTIME">
  1185. </measure>
  1186.  
  1187. <measure smu=virspace>
  1188.   <granule gn=vsu             gd="      1      1 VIRSPACE">
  1189. </measure>
  1190.  
  1191. <measure smu=SIsecond>
  1192.   <granule gn=Ysec            gd="      1   1000 Zsec">
  1193.   <granule gn=Zsec            gd="      1   1000 asec">
  1194.   <granule gn=asec            gd="      1   1000 fsec">
  1195.   <granule gn=fsec            gd="      1   1000 psec">
  1196.   <granule gn=psec            gd="      1   1000 nsec">
  1197.   <granule gn=nsec            gd="      1   1000 usec">
  1198.   <granule gn=usec            gd="      1   1000 msec">
  1199.   <granule gn=msec            gd="      1     10 csec">
  1200.   <granule gn=csec            gd="      1     10 dsec">
  1201.   <granule gn=dsec            gd="      1     10 second">
  1202.   <granule gn=SMPTE-50        gd="      1     50 second">
  1203.   <granule gn=V1250           gd="      1     50 second">
  1204.   <granule gn=SMPTE-240M      gd="      1     30 second">
  1205.   <granule gn=SMPTE-30        gd="      1     30 second">
  1206.   <granule gn=SMPTE-30-drop   gd="    100   2997 second">
  1207.   <granule gn=SMPTE-25        gd="      1     25 second">
  1208.   <granule gn=PAL             gd="      1     25 second">
  1209.   <granule gn=SECAM           gd="      1     25 second">
  1210.   <granule gn=European        gd="      1     25 second">
  1211.   <granule gn=SMPTE-24        gd="      1     24 second">
  1212.   <granule gn=motion-picture  gd="      1     24 second">
  1213.   <granule gn=PC-tick         gd="     10    182 second">
  1214.   <granule gn=SMPTE-24-drop   gd="    100   2396 second">
  1215.   <granule gn=second          gd="      1      1 SISECOND">
  1216.   <granule gn=dasec           gd="     10      1 second">
  1217.   <granule gn=hsec            gd="     10      1 dasec">
  1218.   <granule gn=ksec            gd="     10      1 hsec">
  1219.   <granule gn=Msec            gd="   1000      1 ksec">
  1220.   <granule gn=Gsec            gd="   1000      1 Msec">
  1221.   <granule gn=Tsec            gd="   1000      1 Gsec">
  1222.   <granule gn=Psec            gd="   1000      1 Tsec">
  1223.   <granule gn=Esec            gd="   1000      1 Psec">
  1224.   <granule gn=Zsec            gd="   1000      1 Esec">
  1225.   <granule gn=Ysec            gd="   1000      1 Zsec">
  1226.   <granule gn=minute          gd="     60      1 second">
  1227.   <granule gn=quarter-hour    gd="     15      1 minute">
  1228.   <granule gn=half-hour       gd="     30      1 minute">
  1229.   <granule gn=hour            gd="     60      1 minute">
  1230.   <granule gn=day             gd="     24      1 hour">
  1231.   <granule gn=week            gd="      7      1 day">
  1232.   <granule gn=fortnight       gd="      2      1 week">
  1233. <!-- Year and the granules based on it might not be accurate enough
  1234.      for some applications. -->
  1235.   <granule gn=year            gd="3652425  10000 day">
  1236.   <granule gn=decade          gd="     10      1 year">
  1237.   <granule gn=millenium       gd="   1000      1 year">
  1238. </measure>
  1239.  
  1240. <measure smu=SImeter>
  1241.   <granule gn=ym              gd="      1   1000 zm">
  1242.   <granule gn=zm              gd="      1   1000 am">
  1243.   <granule gn=am              gd="      1   1000 fm">
  1244.   <granule gn=fm              gd="      1   1000 pm">
  1245.   <granule gn=pm              gd="      1   1000 nm">
  1246.   <granule gn=angstrom        gd="      1     10 nm">
  1247.   <granule gn=nm              gd="      1   1000 um">
  1248.   <granule gn=um              gd="      1   1000 mm">
  1249.   <granule gn=mm              gd="      1     10 cm">
  1250.   <granule gn=cm              gd="      1     10 dm">
  1251.   <granule gn=dm              gd="      1     10 meter">
  1252.   <granule gn=meter           gd="      1      1 SIMETER">
  1253.   <granule gn=dam             gd="     10      1 meter">
  1254.   <granule gn=hm              gd="     10      1 dam">
  1255.   <granule gn=km              gd="     10      1 hm">
  1256.   <granule gn=Mm              gd="   1000      1 km">
  1257.   <granule gn=nautical-mile   gd="   1852      1 meter">
  1258.   <granule gn=Gm              gd="   1000      1 Mm">
  1259.   <granule gn=AU              gd="      1 206265 parsec">
  1260.   <granule gn=Tm              gd="   1000      1 Gm">
  1261.   <granule gn=lightyear       gd="    100    326 parsec">
  1262.   <granule gn=Pm              gd="   1000      1 Tm">
  1263.   <granule gn=parsec          gd="   3086      1 Tm">
  1264.   <granule gn=Em              gd="   1000      1 Pm">
  1265.   <granule gn=Zm              gd="   1000      1 Em">
  1266.   <granule gn=Ym              gd="   1000      1 Zm">
  1267.   <granule gn=microinch       gd="      1   1000 milliinch">
  1268.   <granule gn=milliinch       gd="      1   1000 inch">
  1269.   <granule gn=point           gd="      1     12 pica">
  1270.   <granule gn=pica            gd="      1      6 inch">
  1271.   <granule gn=barleycorn      gd="      1      3 inch">
  1272.   <granule gn=inch            gd="    100    254 cm">
  1273.   <granule gn=thumb           gd="      1      1 inch">
  1274.   <granule gn=hand            gd="      4      1 inch">
  1275.   <granule gn=foot            gd="     12      1 inch">
  1276.   <granule gn=cubit           gd="     18      1 inch">
  1277.   <granule gn=royal-cubit     gd="     24      1 inch">
  1278.   <granule gn=yard            gd="      3      1 foot">
  1279.   <granule gn=fathom          gd="      6      1 foot">
  1280.   <granule gn=perch           gd="     11      2 yard">
  1281.   <granule gn=pole            gd="      1      1 perch">
  1282.   <granule gn=rod             gd="      1      1 perch">
  1283.   <granule gn=chain           gd="     66      1 feet">
  1284.   <granule gn=furlong         gd="    220      1 yard">
  1285.   <granule gn=quarter-mile    gd="    440      1 yard">
  1286.   <granule gn=mile            gd="   1760      1 yard">
  1287.   <granule gn=league          gd="      7      1 mile">
  1288. </measure>
  1289.  
  1290. </doc>
  1291.